Skip to content


ai  101  pytorch  classification  nvidia  cuda  install  tensorrt  yolo  ardupilot  None  ros2  dds  micro ros  xrce  sitl  plugin  SITL  debug  rangefinder  pymavlink  mavros  gazebo  distance sensor  system_time  timesync  cmake  gtest  ctest  cpp  c++  format  fmt  multithreading  spdlog  camera  coordinate system  orb  matching  opencv  build  transformation  computer vision  homography  optical flow  of  trackers  cv  cyclonedds  eprosima  fastdds  simulation  config  ignition  bridge  sdf  tips  ign-transport  sensors  lidar  aptly  apt  encryption  pgp  docker  git  bundle  github  hooks  pre-commit  lxd  container  lxc  x11  profile  vscode  marpit  presentation  marp  markdown  mermaid  video  ffmpeg  gstreamer  cheat-sheet  sdp  v4l2loopback  gi  snippets  cheat Sheet  python  asyncio  future  click  cli  numpy  project  template  black  isort  docs  project document  docstrings  flake8  linter  git-hook  mypy  unittest  pytest  pylint  mock  iterator  generator  logging  tuple  namedtuple  typing  annotation  pyzmq  zmq  msgpack  action  namespace  remap  control2  ros2_control  gdb  qos  tag  plugins  msg  node  zero-copy  shm  tutorial  algorithm  calibration  diff  pid  dev  colcon  colcon_cd  rpi  arm  qemu  settings  behavior  plot  visualization  debugging  diagnostic  diagnostics  tutorials  gst  math  apm  rat_runtime_monitor  web  rosbridge  vue  binding  discovery  gazebo-classic  launch  spawn  cook  gps  imu  ray  gazebo_ros_ray_sensor  ultrsonic  range  ultrasonic  gazebo classic  wrench  effort  odom  ign  gz  xacro  ros_ign  diff_drive  odometry  joint_state  argument  OpaqueFunction  DeclareLaunchArgument  LaunchConfiguration  tmux  nav  slam  test  rclpy  executor  MultiThreadedExecutor  SingleThreadedExecutor  param  dynamic-reconfigure  service  client  setup.py  package.xml  parameter  parameters  custom  msgs  executers  pub  sub  rqt  rviz  rviz2  pose  marker  tf2  deb  package  setup  local_setup  rosdep  package manager  project settings  vcstool  cross-compiler  nano  texture  tmuxp  rootfs  embedded  zah  linux  rm  ubuntu  ip  ss  network  netstat  snap  deploy  ssh  systemd  mkdocs  extensions  socat  networking  serial  udp  tc  mtu  select  px4  robotics  kalman_filter  kalman  filter  control  todo  vscode-ext  json  yaml  schema  yocto  poky  world  gazebo_ros2_control  position_controller  effort_controller  velocity_controller  urdf  gazebo_ros_force  gazebo_ros_joint_state_publisher  robot_state_publisher  joint_state_publisher  projects  vrx  buoyancy 

Part4 - Yocto tutorial

Add package to images


Table of Content

Yocto project tree#

  • meta-external
  • meta-openembedded
  • poky
meta-external share git project across multiple yocto project

Help

  • git submodule
  • git submodule add
  • git submodule update –init –recursive

meta-external#

Collection of yocto git repositories from git

meta-openembedded
git submodule add https://github.com/openembedded/meta-openembedded.git

layers#

Add layers to bblayers.conf file

bitbake-layers show-layers
NOTE: Starting bitbake server...
layer                 path                                      priority
==========================================================================
meta                  /home/user/yocto/poky/meta                5
meta-poky             /home/user/yocto/poky/meta-poky           5
meta-yocto-bsp        /home/user/yocto/poky/meta-yocto-bsp      5
meta-oe               /home/user/yocto/meta-external/meta-openembedded/meta-oe  6
meta-python           /home/user/yocto/meta-external/meta-openembedded/meta-python  7

Add dropbear ssh#

OpenEmbedded#

Search for dropbear recipe in openembedded Layer index

Check

openembedded-core is part of poky meta ? Yes I found dropbear under meta/recipes-core/dropbear

setup#

  • Add to local.conf
append to local.conf
CORE_IMAGE_EXTRA_INSTALL += "dropbear"

Note

  • IMAGE_INSTALL is the variable that controls what is included in any image.
  • CORE_IMAGE_EXTRA_INSTALL is a convenience variable that enable you to add extra packages to an image based on the core-image class

Create image#

# from build folder
bitbake core-image-minimal

Check#

# under build folder
ll tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r0/rootfs/usr/sbin/dropbear

run image with qemu#

run image
runqemu tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64-<build number>.qemuboot.conf nographic
check dropbear is running
ps | grep drop
  259 root      3020 S    /usr/sbin/dropbear -r /etc/dropbear/dropbear_rsa_host_key -p 22 -B
  293 root      4224 S    grep drop

ssh from host#

ssh root@192.168.7.2

check recipe location#

bitbake -e dropbear | grep ^FILE=
# Result
FILE="/home/user/yocto/poky/meta/recipes-core/dropbear/dropbear_2020.81.bb"
#

Add python3#

  • Search recipe

  • Show recipe more info

setup#

  • Add to local.conf
append to local.conf
CORE_IMAGE_EXTRA_INSTALL += "dropbear python3"

check recipe location#

bitbake -e python3 | grep ^FILE=
FILE="/home/user/yocto/poky/meta/recipes-devtools/python/python3_3.9.9.bb"

Create image#

# from build folder
bitbake core-image-minimal